package io.easyspring.common.generator.config;

import com.baomidou.mybatisplus.generator.InjectionConfig;
import io.easyspring.common.generator.support.FileOutParameter;

import java.util.List;
import java.util.Map;

/**
 * 生成器注册配置类
 *
 * @author summer
 * @version V1.0.0-RELEASE
 * DateTime 2019-05-11 19:09
 */
public class GeneratorInjectionConfig {

    /**
     * 注入 injectionConfig 配置
     *
     * Author summer
     * DateTime 2018-12-13 15:33
     * @return com.baomidou.mybatisplus.generator.config.DataSourceConfig
     * Version V1.0.0-RELEASE
     */
    public static InjectionConfig injectionConfig(Map<String, Object> cfgMap, List<FileOutParameter> fileOutParameterList){

        // 创建 InjectionConfig 对象
        InjectionConfig injectionConfig = new InjectionConfig() {
            @Override
            public void initMap() {
                /*
                 * 自定义返回配置 Map 对象
                 * 该对象可以传递到模板引擎通过 cfg.map.xxx 引用
                 */
                this.setMap(cfgMap);
            }
        };

        /*
         * 自定义输出文件
         * 配置 FileOutConfig 指定模板文件、输出文件达到自定义文件生成目的
         */

        // 把自定义的输出文件加入到自定义配置中
        injectionConfig.setFileOutConfigList(GeneratorFileOutConfig.fileOutConfig(fileOutParameterList));

        /*
         * 自定义判断是否创建文件
         * 实现 IFileCreate 接口
         * 该配置用于判断某个类是否需要覆盖创建，当然你可以自己实现差异算法 merge 文件
         */
        // injectionConfig.setFileCreate();


        return injectionConfig;
    }
}
